package cn.itcast.service.system.impl;

import cn.itcast.dao.system.RoleDao;
import cn.itcast.domain.system.Role;
import cn.itcast.service.system.RoleService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class RoleServiceImpl implements RoleService{
    @Autowired
    private RoleDao roleDao;

    //分页查询
    public PageInfo findAll(int page, int size, String companyId) {
        //1.设置分页参数
        PageHelper.startPage(page,size);
        //2.查询全部
        List<Role> list = roleDao.findAll(companyId);
        //3.构造返回结果
        return new PageInfo(list);
    }
    //查询所有
    public List<Role> findAll(String loginCompanyId) {
        return roleDao.findAll(loginCompanyId);
    }

    //根据i查询
    public Role findById(String id) {
       return roleDao.findById(id);
    }
    //保存
    public void save(Role role) {
        //保证id唯一
        role.setId(UUID.randomUUID().toString());
        roleDao.save(role);
    }
    //更新
    public void update(Role role) {
        roleDao.update(role);
    }
    //删除
    public void delete(String id) {
        roleDao.delete(id);
    }
    /**
     * 分配权限
     *      roleid：角色id
     *      moduleIds：勾选的模块id的字符串，使用  ， 隔开
     * 业务逻辑：
     *      1.根据角色id删除中间表数据
     *      2.循环保存每条中间表数据
     */
    public void updateRoleModule(String roleId, String moduleIds) {
        // 1.根据角色id删除中间表数据
        roleDao.deleteRoleModule(roleId);
        // 2.循环保存每条中间表数据
        String ids[] = moduleIds.split(",");
        for (String moduleId : ids) {
            roleDao.saveRoleModule(roleId,moduleId);
        }
    }
    //根据用户id查询用户所具有的角色列表
    public List<Role> findByUserId(String id) {
        return roleDao.findByUserId(id);
    }
}
